﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
using Krile.Kernel.Bridges;
using System.Runtime.InteropServices;

namespace Krile.Forms.MainForm
{
    public class SearchTarget
    {
        public enum SelectTargets { Above, Below, Top, End, Newest, AboveNew, BelowNew, Deselect };
    }

    public interface IFormEx : IForm
    {
        Controls.XTab.XTabWindowItem LinkingWindowTab { get; set; }

        void EnsureVisibleTop();

        void CreateTab(string name, Krile.Kernel.Data.SearchDataCluster cluster, bool unNotify, string[] svids);

        void RegistTab(Controls.XTab.XTabItem item);

        void RemoveTab(Controls.XTab.XTabItem item);

        bool Visible { get; }

        FormWindowState WindowState { get; set; }

        Point PointToScreen(Point orig);

        Rectangle ClientRectangle { get; }

        void DeselectStatus();

        void AddInheritedTabAutoFormat(string extractSearchName, Krile.Kernel.Data.SearchDataBase[] addSearchDatas);

        void AddInheritedTab(string name, Krile.Kernel.Data.SearchDataBase[] addSearchDatas);

        bool SetSelectStatus(SearchTarget.SelectTargets target);

        void SetScrollState(SearchTarget.SelectTargets target);

        Controls.XTab.XTab TabControl { get; }

        Controls.Surface.Surface Surface { get; }

        void UpdateTimeline();

        void SetReadedAll();

        bool SelectStatusByUID(ulong uid, bool p);

        void SetSearchbarVisible(bool visible);

        bool SearchbarVisible { get; }

        void Activate();

        HandleRef hWndHandle { get; }

        Point Location { get; }

        Size Size { get; }
    }
}